CREATE PROCEDURE SP_CARGA_OPERACIONAL_STAGING_FUNCIONARIO(
	@DATA DATETIME
)
AS
BEGIN
	DELETE FROM FuncionarioAux
	INSERT INTO FuncionarioAux (DataCarga, cdFuncionario, Nome, CPF, Sexo, DataNascimento, EstadoCivil, Telefone, Email, Rua, Numero, Bairro, Cidade,Estado, cargo, Salario) 
	(SELECT @DATA, f.cdFuncionario, f.Nome, f.CPF, f.Sexo, f.DataNascimento, f.EstadoCivil, f.Telefone, f.Email, f.Rua, f.Numero, f.Bairro, f.Cidade, f.Estado, f.cargo, f.Salario FROM Funcionario AS f) 
END;
GO

CREATE PROCEDURE SP_CARGA_OPERACIONAL_STAGING_CLIENTE(
	@DATA DATETIME
)
AS
BEGIN
	DELETE FROM ClienteAux
	INSERT INTO ClienteAux (DataCarga, cdCliente, Nome, CPF, Sexo, DataNascimento, EstadoCivil, Telefone, Email, Rua, Numero, Bairro, Cidade, Estado) 
	(SELECT @DATA, c.cdCliente, c.Nome, c.CPF, c.Sexo, c.DataNascimento, c.EstadoCivil, c.Telefone, c.Email, c.Rua, c.Numero, c.Bairro, c.Cidade, c.Estado FROM Cliente AS c) 
END;
GO

CREATE PROCEDURE SP_CARGA_OPERACIONAL_STAGING_VENDA(
	@DATA DATETIME
)
AS
BEGIN
	DELETE FROM VendaAux
	INSERT INTO VendaAux (DataCarga, cdProduto, cdCliente, cdFuncionario, cdFormaPagamento, cdVenda, DataVenda, Valor, Quantidade, ValorComissao) 
		(SELECT @DATA, i.Produto_cdProduto, v.Cliente_cdCliente, v.Funcionario_cdFuncionario, v.FormaPagamento_cdFormaPagamento, v.cdVenda, v.DataVenda, i.Valor, i.Quantidade, i.ValorComissao
		FROM Venda AS v 
		INNER JOIN ItemVenda AS i 
		ON v.cdVenda = i.Venda_cdVenda 
		GROUP BY v.cdVenda, v.Cliente_cdCliente,v.Funcionario_cdFuncionario,v.FormaPagamento_cdFormaPagamento,v.DataVenda, i.Produto_cdProduto, i.Valor, i.Quantidade, i.ValorComissao)
END;
GO

CREATE PROCEDURE SP_CARGA_OPERACIONAL_STAGING_PRODUTO(
	@DATA DATETIME
)
AS
BEGIN
	DELETE FROM ProdutoAux
	INSERT INTO ProdutoAux (DataCarga, cdProduto, DescricaoProduto, Preco, Estoque, DescricaoCategoria, Comissao, Unidade, EstoqueMinimo, CodigoFabricante) 
	(SELECT @DATA,p.cdProduto, p.DescricaoProduto, p.Preco, p.Estoque, p.DescricaoCategoria, p.Comissao, p.Unidade, p.EstoqueMinimo, p.CodigoFabricante FROM Produto as p) 
END;
GO

CREATE PROCEDURE SP_CARGA_OPERACIONAL_STAGING_FORMAPAGAMENTO(
	@DATA DATETIME
)
AS
BEGIN
	DELETE FROM FormaPagamentoAux
	INSERT INTO FormaPagamentoAux (DataCarga, cdFormaPagamento, Descricao) 
	(SELECT @DATA, f.cdFormaPagamento, f.Descricao  FROM FormaPagamento as f) 
END;
GO

SET DATEFORMAT DMY
EXEC SP_CARGA_OPERACIONAL_STAGING_FUNCIONARIO '16/07/2012'
EXEC SP_CARGA_OPERACIONAL_STAGING_CLIENTE '16/07/2012'
EXEC SP_CARGA_OPERACIONAL_STAGING_VENDA '16/07/2012'
EXEC SP_CARGA_OPERACIONAL_STAGING_PRODUTO '16/07/2012'
EXEC SP_CARGA_OPERACIONAL_STAGING_FORMAPAGAMENTO '16/07/2012'

SELECT * FROM Cliente
SELECT * FROM Funcionario
SELECT * FROM FormaPagamento
SELECT * FROM Venda
SELECT * FROM ItemVenda
SELECT * FROM Produto